// 使用for_each和lambda表达式可能会更好一点，无需循环，语义更加明显

// void free() {
//   if (elements) {
//     // 			for (auto p = first_free; p != elements; )
//     // 			{
//     // 				alloc.destroy(--p);
//     // 			}
//     for_each(elements, first_free,
//              [this](std::string &rhs) { alloc.destroy(&rhs); });
//     alloc.deallocate(elements, cap - elements);
//   }
// }
